home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / Windows / Interfaces / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-03  |  9.1 KB  |  304 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DController.h                                         **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Each physical device is represented in the system by a     **
  7.  **                 Controller record.  A device driver typically creates     **
  8.  **                 a controller.  Controller feeds changes in coordinates     **
  9.  **                 to a Tracker.                                             **
  10.  **                                                                          **
  11.  **                                                                          **
  12.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  13.  **                                                                          **
  14.  **                                                                          **
  15.  *****************************************************************************/
  16. #ifndef QD3DController_h
  17. #define QD3DController_h
  18.  
  19. #if PRAGMA_ONCE
  20.     #pragma once
  21. #endif
  22.  
  23. #if defined(THINK_C) || defined(__SC__)
  24.     #pragma options(!pack_enums, !align_arrays)
  25.     #pragma SC options align=power
  26. #elif defined(__MWERKS__)
  27.     #pragma enumsalwaysint on
  28.     #pragma align_array_members off
  29.     #pragma options align=native
  30. #elif defined(__PPCC__)
  31.     #pragma options align=power
  32. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  33.     #pragma options enum=int
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif  /*  __cplusplus  */
  39.  
  40.  
  41. /******************************************************************************
  42.  **                                                                             **
  43.  **                                Type Definitions                             **
  44.  **                                                                             **
  45.  *****************************************************************************/
  46.  
  47. #define kQ3ControllerSetChannelMaxDataSize        256
  48.  
  49. typedef TQ3Status (*TQ3ChannelGetMethod) (
  50.     TQ3ControllerRef            controllerRef,
  51.     unsigned long                channel,
  52.     void                        *data,
  53.     unsigned long                *dataSize);
  54.  
  55. typedef TQ3Status (*TQ3ChannelSetMethod) (
  56.     TQ3ControllerRef            controllerRef,
  57.     unsigned long                channel,
  58.     const void                    *data,
  59.     unsigned long                dataSize);
  60.  
  61. typedef struct TQ3ControllerData {
  62.     char                        *signature;
  63.     unsigned long                valueCount;
  64.     unsigned long                channelCount;
  65.     TQ3ChannelGetMethod            channelGetMethod;
  66.     TQ3ChannelSetMethod            channelSetMethod;
  67. } TQ3ControllerData;
  68.  
  69.  
  70. /******************************************************************************
  71.  **                                                                             **
  72.  **                                     Routines                                 **
  73.  **                                                                             **
  74.  *****************************************************************************/
  75.  
  76. QD3D_EXPORT TQ3Status Q3Controller_GetListChanged (
  77.     TQ3Boolean                    *listChanged,
  78.     unsigned long                *serialNumber);
  79.  
  80. QD3D_EXPORT TQ3Status Q3Controller_Next(
  81.     TQ3ControllerRef            controllerRef,
  82.     TQ3ControllerRef            *nextControllerRef);
  83.  
  84. QD3D_EXPORT TQ3ControllerRef Q3Controller_New(
  85.     const TQ3ControllerData        *controllerData);
  86.  
  87. QD3D_EXPORT TQ3Status Q3Controller_Decommission(
  88.     TQ3ControllerRef            controllerRef);
  89.  
  90. QD3D_EXPORT TQ3Status Q3Controller_SetActivation(
  91.     TQ3ControllerRef            controllerRef,
  92.     TQ3Boolean                    active);
  93.  
  94. QD3D_EXPORT TQ3Status Q3Controller_GetActivation(
  95.     TQ3ControllerRef            controllerRef,
  96.     TQ3Boolean                    *active);
  97.  
  98. QD3D_EXPORT TQ3Status Q3Controller_GetSignature(
  99.     TQ3ControllerRef            controllerRef,
  100.     char                        *signature,
  101.     unsigned long                numChars);
  102.  
  103. QD3D_EXPORT TQ3Status Q3Controller_SetChannel(
  104.     TQ3ControllerRef            controllerRef,
  105.     unsigned long                channel,
  106.     const void                    *data,
  107.     unsigned long                dataSize);
  108.  
  109. QD3D_EXPORT TQ3Status Q3Controller_GetChannel(
  110.     TQ3ControllerRef            controllerRef,
  111.     unsigned long                channel,
  112.     void                        *data,
  113.     unsigned long                *dataSize);
  114.  
  115. QD3D_EXPORT TQ3Status Q3Controller_GetValueCount(
  116.     TQ3ControllerRef            controllerRef,
  117.     unsigned long                *valueCount);
  118.  
  119. QD3D_EXPORT TQ3Status Q3Controller_SetTracker(
  120.     TQ3ControllerRef            controllerRef,
  121.     TQ3TrackerObject            tracker);
  122.  
  123. QD3D_EXPORT TQ3Status Q3Controller_HasTracker(
  124.     TQ3ControllerRef            controllerRef,
  125.     TQ3Boolean                    *hasTracker);
  126.  
  127. QD3D_EXPORT TQ3Status Q3Controller_Track2DCursor(
  128.     TQ3ControllerRef            controllerRef,
  129.     TQ3Boolean                    *track2DCursor);
  130.  
  131. QD3D_EXPORT TQ3Status Q3Controller_Track3DCursor(
  132.     TQ3ControllerRef            controllerRef,
  133.     TQ3Boolean                    *track3DCursor);
  134.  
  135. QD3D_EXPORT TQ3Status Q3Controller_GetButtons(
  136.     TQ3ControllerRef            controllerRef,
  137.     unsigned long                *buttons);
  138.  
  139. QD3D_EXPORT TQ3Status Q3Controller_SetButtons(
  140.     TQ3ControllerRef            controllerRef,
  141.     unsigned long                buttons);
  142.  
  143. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerPosition(
  144.     TQ3ControllerRef            controllerRef,
  145.     TQ3Point3D                    *position);
  146.  
  147. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerPosition(
  148.     TQ3ControllerRef            controllerRef,
  149.     const TQ3Point3D            *position);
  150.  
  151. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerPosition(
  152.     TQ3ControllerRef            controllerRef,
  153.     const TQ3Vector3D            *delta);
  154.  
  155. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerOrientation(
  156.     TQ3ControllerRef            controllerRef,
  157.     TQ3Quaternion                *orientation);
  158.  
  159. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerOrientation(
  160.     TQ3ControllerRef            controllerRef,
  161.     const TQ3Quaternion            *orientation);
  162.  
  163. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerOrientation(
  164.     TQ3ControllerRef            controllerRef,
  165.     const TQ3Quaternion            *delta);
  166.  
  167. QD3D_EXPORT TQ3Status Q3Controller_GetValues(
  168.     TQ3ControllerRef            controllerRef,
  169.     unsigned long                valueCount,
  170.     float                        *values,
  171.     TQ3Boolean                    *changed,
  172.     unsigned long                *serialNumber);
  173.  
  174. QD3D_EXPORT TQ3Status Q3Controller_SetValues(
  175.     TQ3ControllerRef            controllerRef,
  176.     const float                    *values,
  177.     unsigned long                valueCount);
  178.  
  179.  
  180. /******************************************************************************
  181.  **                                                                             **
  182.  **                                     Routines                                 **
  183.  **                                                                             **
  184.  *****************************************************************************/
  185.  
  186. QD3D_EXPORT TQ3ControllerStateObject Q3ControllerState_New(
  187.     TQ3ControllerRef            controllerRef);
  188.  
  189. QD3D_EXPORT TQ3Status Q3ControllerState_SaveAndReset(
  190.     TQ3ControllerStateObject    controllerStateObject);
  191.  
  192. QD3D_EXPORT TQ3Status Q3ControllerState_Restore(
  193.     TQ3ControllerStateObject    controllerStateObject);
  194.  
  195.  
  196. /******************************************************************************
  197.  **                                                                             **
  198.  **                                Type Definitions                             **
  199.  **                                                                             **
  200.  *****************************************************************************/
  201.  
  202. typedef TQ3Status (*TQ3TrackerNotifyFunc) (
  203.     TQ3TrackerObject            trackerObject,
  204.     TQ3ControllerRef            controllerRef);
  205.  
  206.  
  207. /******************************************************************************
  208.  **                                                                             **
  209.  **                                     Routines                                 **
  210.  **                                                                             **
  211.  *****************************************************************************/
  212.  
  213. QD3D_EXPORT TQ3TrackerObject Q3Tracker_New(
  214.     TQ3TrackerNotifyFunc        notifyFunc);
  215.  
  216. QD3D_EXPORT TQ3Status Q3Tracker_SetNotifyThresholds(
  217.     TQ3TrackerObject            trackerObject,
  218.     float                        positionThresh,
  219.     float                        orientationThresh);
  220.  
  221. QD3D_EXPORT TQ3Status Q3Tracker_GetNotifyThresholds(
  222.     TQ3TrackerObject            trackerObject,
  223.     float                        *positionThresh,
  224.     float                        *orientationThresh);
  225.  
  226. QD3D_EXPORT TQ3Status Q3Tracker_SetActivation (
  227.     TQ3TrackerObject            trackerObject,
  228.     TQ3Boolean                    active);
  229.  
  230. QD3D_EXPORT TQ3Status Q3Tracker_GetActivation (
  231.     TQ3TrackerObject            trackerObject,
  232.     TQ3Boolean                    *active);
  233.  
  234. QD3D_EXPORT TQ3Status Q3Tracker_GetButtons(
  235.     TQ3TrackerObject            trackerObject,
  236.     unsigned long                *buttons);
  237.  
  238. QD3D_EXPORT TQ3Status Q3Tracker_ChangeButtons(
  239.     TQ3TrackerObject            trackerObject,
  240.     TQ3ControllerRef            controllerRef,
  241.     unsigned long                buttons,
  242.     unsigned long                buttonMask);
  243.  
  244. QD3D_EXPORT TQ3Status Q3Tracker_GetPosition(
  245.     TQ3TrackerObject            trackerObject,
  246.     TQ3Point3D                    *position,
  247.     TQ3Vector3D                    *delta,
  248.     TQ3Boolean                    *changed,
  249.     unsigned long                *serialNumber);
  250.  
  251. QD3D_EXPORT TQ3Status Q3Tracker_SetPosition(
  252.     TQ3TrackerObject            trackerObject,
  253.     TQ3ControllerRef            controllerRef,
  254.     const TQ3Point3D            *position);
  255.  
  256. QD3D_EXPORT TQ3Status Q3Tracker_MovePosition(
  257.     TQ3TrackerObject            trackerObject,
  258.     TQ3ControllerRef            controllerRef,
  259.     const TQ3Vector3D            *delta);
  260.  
  261. QD3D_EXPORT TQ3Status Q3Tracker_GetOrientation(
  262.     TQ3TrackerObject            trackerObject,
  263.     TQ3Quaternion                *orientation,
  264.     TQ3Quaternion                *delta,
  265.     TQ3Boolean                    *changed,
  266.     unsigned long                *serialNumber);
  267.  
  268. QD3D_EXPORT TQ3Status Q3Tracker_SetOrientation(
  269.     TQ3TrackerObject            trackerObject,
  270.     TQ3ControllerRef            controllerRef,
  271.     const TQ3Quaternion            *orientation);
  272.  
  273. QD3D_EXPORT TQ3Status Q3Tracker_MoveOrientation(
  274.     TQ3TrackerObject            trackerObject,
  275.     TQ3ControllerRef            controllerRef,
  276.     const TQ3Quaternion            *delta);
  277.  
  278. QD3D_EXPORT TQ3Status Q3Tracker_SetEventCoordinates(
  279.     TQ3TrackerObject            trackerObject,
  280.     unsigned long                timeStamp,
  281.     unsigned long                buttons,
  282.     const TQ3Point3D            *position,
  283.     const TQ3Quaternion            *orientation);
  284.  
  285. QD3D_EXPORT TQ3Status Q3Tracker_GetEventCoordinates(
  286.     TQ3TrackerObject            trackerObject,
  287.     unsigned long                timeStamp,
  288.     unsigned long                *buttons,
  289.     TQ3Point3D                    *position,
  290.     TQ3Quaternion                *orientation);
  291.  
  292.  
  293. #ifdef __cplusplus
  294. }
  295. #endif  /*  __cplusplus  */
  296.  
  297. #if defined(__MWERKS__)
  298.     #pragma enumsalwaysint reset
  299. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  300.     #pragma options enum=reset
  301. #endif
  302.  
  303. #endif  /*  QD3DController_h  */
  304.